
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.ListIterator;

public class XMLHandler {
	
	private String pathArchivo;
	

	public void setpathArchivo(String path){
		pathArchivo = path;
	}

	public String getpathArchivo(){
		return this.pathArchivo;
	}
	
	public XMLHandler(String path){
		pathArchivo = path;
	}
	
	public int getcantidadelementos(){
		
		Element root = this.cargar();
		List list = root.getChildren();
		return list.size();
	}
	
	public void guardar(Element elemento, int posicion){
		
		try {
	        
			Element root = this.cargar();
			
			if (posicion == (this.getcantidadelementos() + 1) ){
				root.addContent(elemento);
			}
			else if (posicion < this.getcantidadelementos() + 1){
				root.setContent(posicion+(posicion-1), elemento);
			}
	       	
	        XMLOutputter outputter = new XMLOutputter();
	        outputter.setFormat(Format.getPrettyFormat());
	        
	        FileWriter writer = new FileWriter(pathArchivo);
	        outputter.output(root, writer);
	        writer.close();
	    	         
		} catch(Exception e) {
			//throw new RuntimeException(e);
			FileWriter writer;
			try {
				writer = new FileWriter(pathArchivo);
			    XMLOutputter outputter = new XMLOutputter();
				outputter.output(elemento, writer);
			    writer.close();
			} catch (IOException e1) {}
		}
	}
	
	
	public void borrarElementos (){
		
		try{
			Element root = this.cargar();
			ListIterator<Element> it = root.getChildren().listIterator();
			while (it.hasNext()){
				Element child = it.next();
				System.out.println(child.getName());
				it.remove();
			}
			this.guardar(root, 1);
		}catch(Exception e){}
	}
	
	
	public void guardarElemento(Element elemento, int posicion){
			this.guardar(elemento, posicion);
	}
	
	public Element cargar() {
		try {
	        SAXBuilder builder = new SAXBuilder();
	        Document documento = builder.build(pathArchivo);
	        Element root = documento.getRootElement();
	        return root;
	        
		} catch(Exception e) {
			System.out.print("El archivo no tiene estructura de xml");
			throw new RuntimeException(e);
		}
	}
}
